home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / sbin / modules-update < prev    next >
Text File  |  2006-04-25  |  5KB  |  215 lines

  1. #!/bin/bash
  2. #
  3. # This is the modules-update script for Debian GNU/Linux.
  4. # Written by Wichert Akkerman <wakkerma@debian.org>
  5. # Copyright (C) 1998, 1999 Software in the Public Interest
  6. #
  7. # Modifications by Daniel Robbins <drobbins@gentoo.org>, Gentoo Foundation
  8. # 02 Sep 2001 -- Removed "arch" stuff since I see no reason to have
  9. # support for varying CPU architectures on a single system.
  10. #
  11. # Updated by Aron Griffis <agriffis@gentoo.org>
  12. # 05 May 2004 -- handle --assume-kernel argument for livecd building
  13.  
  14. CFGFILE="/etc/modules.conf"
  15. TMPFILE="${CFGFILE}.$$"
  16. CFGFILE2="/etc/modprobe.conf"
  17. TMPFILE2="${CFGFILE2}.$$"
  18. CFGFILE3="/etc/modules.devfs"
  19. TMPFILE3="${CFGFILE3}.$$"
  20. CFGFILE4="/etc/modprobe.devfs"
  21. TMPFILE4="${CFGFILE4}.$$"
  22. MODDIR="/etc/modules.d"
  23. ARCHDIR="${MODDIR}/arch"
  24. HEADER="### This file is automatically generated by modules-update"
  25.  
  26. source /sbin/functions.sh
  27.  
  28. # Parse command-line
  29. FORCE=false
  30. ASSUME_KV=
  31. while [ -n "$1" ]; do
  32.     case "$1" in
  33.         force)
  34.             FORCE=true ;;
  35.         --assume-kernel=*)
  36.             ASSUME_KV=${1#*=} ;;
  37.         *)
  38.             echo "Error: I don't understand $1" >&2
  39.             exit 1 ;;
  40.     esac
  41.     shift
  42. done
  43.  
  44. # Set kernel version, either from --assume-kernel or uname -r
  45. KV=${ASSUME_KV:-$(uname -r)}
  46. if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.5.48) ]]; then
  47.     KERNEL_2_5=true
  48. else
  49.     KERNEL_2_5=false
  50. fi
  51.  
  52. set -e
  53.  
  54. # Reset the sorting order since we depend on it
  55. export LC_COLLATE="C"
  56.  
  57. depdir() {
  58.     dep="`sed -n -e '/[ \t]*depfile=/h;${x;s/[ \t]*depfile=//g;s,/[^/]*$,,p}' ${CFGFILE}`"
  59.     if [ -z "${dep}" ]
  60.     then
  61.         dep="/lib/modules/${KV}"
  62.     fi
  63.  
  64.     echo "${dep}"
  65. }
  66.  
  67. CFGFILES="${CFGFILE}"
  68.  
  69. if ${KERNEL_2_5}; then
  70.     CFGFILES="${CFGFILES} ${CFGFILE2} ${CFGFILE4}"
  71. fi
  72.  
  73. for x in ${CFGFILES}
  74. do
  75.     if [ -f "${x}" ]
  76.     then
  77.         if ! sed -ne 1p "${x}" | egrep -q "^${HEADER}"
  78.         then
  79.             echo "Error: the current ${x} is not automatically generated."
  80.         
  81.             if $FORCE; then
  82.                 echo "force specified, (re)generating file anyway."
  83.             else
  84.                 echo "Use \"modules-update force\" to force (re)generation."
  85.                 exit 1
  86.             fi
  87.         fi
  88.     fi
  89. done
  90.  
  91. if [ 0 -ne "`id -u`" ]
  92. then
  93.     echo "You have to be root to do this."
  94.     exit 2
  95. fi
  96.  
  97. if [ -e "${CFGFILE}" ]
  98. then
  99.     cp -f "${CFGFILE}" "${CFGFILE}".old
  100. fi
  101. if ${KERNEL_2_5}; then
  102.     if [ -e "${CFGFILE2}" ]
  103.     then
  104.         cp -f "${CFGFILE2}" "${CFGFILE2}".old
  105.     fi
  106.     if [ -e "${CFGFILE4}" ]
  107.     then
  108.         cp -f "${CFGFILE4}" "${CFGFILE4}".old
  109.     fi
  110. fi
  111.  
  112.  
  113. echo "${HEADER}" > "${TMPFILE}"
  114. cat <<EOF >> "${TMPFILE}"
  115. #
  116. # Please do not edit this file directly. If you want to change or add
  117. # anything please take a look at the files in ${MODDIR} and read
  118. # the manpage for modules-update.
  119. #
  120. EOF
  121. if [ -x /sbin/generate-modprobe.conf -a "${KERNEL_2_5}" = "true" ]
  122. then
  123.     sed -e "s:the files in ${MODDIR}:${CFGFILE}:" \
  124.         "${TMPFILE}" > "${TMPFILE2}"
  125.  
  126.     if [ -f "${CFGFILE3}" ]
  127.     then
  128.         sed -e "s:the files in ${MODDIR}:${CFGFILE3}:" \
  129.             "${TMPFILE}" > "${TMPFILE4}"
  130.     fi
  131. fi
  132.  
  133. for cfg in "${MODDIR}"/* "${CONF}"
  134. do
  135.     [ -d "${cfg}" ] && continue
  136.  
  137.     [ ! -r "${cfg}" ] && continue
  138.  
  139.     # Skip backup and RCS files; fixes bug 20597 (07 May 2004 agriffis)
  140.     [[ ${cfg} == *~ || ${cfg} == *.bak || ${cfg} == *,v ]] && continue
  141.     
  142.     echo "### modules-update: start processing ${cfg}" >> "${TMPFILE}"
  143.     
  144.     if [ -x ${cfg} ]
  145.     then
  146.         # $cfg can be executable; nice touch, Wichert! :)
  147.         "${cfg}" >> "${TMPFILE}"
  148.     else
  149.         cat "${cfg}" >> "${TMPFILE}"
  150.     fi
  151.     
  152.     echo >> "${TMPFILE}"
  153.     echo "### modules-update: end processing ${cfg}" >> "${TMPFILE}"
  154.     echo >> "${TMPFILE}"
  155. done
  156.  
  157. mv -f "${TMPFILE}" "${CFGFILE}"
  158.  
  159. if [ -x /sbin/generate-modprobe.conf -a "${KERNEL_2_5}" = "true" ]
  160. then
  161.     # Make sure that generate-modprobe.conf can handle --assume-kernel
  162.     # if we were called with it.
  163.     if [[ -n ${ASSUME_KV} ]] && ! grep -qe --assume-kernel \
  164.         /sbin/generate-modprobe.conf
  165.     then
  166.         eerror "Error: modules-update called with --assume-kernel flag, but"
  167.         eerror "generate-modprobe.conf doesn't understand it.  You need to"
  168.         eerror "install >=module-init-tools-3.0-r2"
  169.         exit 3
  170.     fi
  171.     if /sbin/generate-modprobe.conf ${ASSUME_KV:+--assume-kernel=${KV}} \
  172.         >> "${TMPFILE2}" 2> /dev/null
  173.     then
  174.         mv -f "${TMPFILE2}" "${CFGFILE2}"
  175.     else
  176.         ewarn "Warning: could not generate ${CFGFILE2}!"
  177.         rm -f "${TMPFILE2}"
  178.     fi
  179.  
  180.     if [ -f "${CFGFILE3}" ]
  181.     then
  182.         gawk '$0 !~ /^[[:space:]]*include/ { print $0 }' "${CFGFILE3}" \
  183.             > "${TMPFILE3}"
  184.         
  185.         export TESTING_MODPROBE_CONF="${TMPFILE3}"
  186.         if /sbin/generate-modprobe.conf ${ASSUME_KV:+--assume-kernel=${KV}} \
  187.             >> "${TMPFILE4}" 2> /dev/null
  188.         then
  189.             mv -f "${TMPFILE4}" "${CFGFILE4}"
  190.  
  191.             echo >> "${CFGFILE4}"
  192.             echo "include /etc/modprobe.conf" >> "${CFGFILE4}"
  193.         else
  194.             ewarn "Warning: could not generate ${CFGFILE4}!"
  195.             rm -f "${TMPFILE4}"
  196.         fi
  197.         rm -f "${TMPFILE3}"
  198.     fi
  199. fi
  200.  
  201. # We also call depmod here to stop insmod from complaining that modules.conf
  202. # is more recent then modules.dep
  203. #
  204. if [ -d "`depdir`" -a -f /proc/modules ]
  205. then
  206.     if [ -f /usr/src/linux/System.map ]; then
  207.         depmod -a -F /usr/src/linux/System.map ${KV}
  208.     else
  209.         ewarn "System.map not found - unable to check symbols"
  210.     fi
  211. fi
  212.  
  213.  
  214. # vim:ts=4
  215.